Chủ đề Phần_mềm

Kiến trúc

Bài chi tiết: Kiến trúc phần mềm

Người dùng thường thấy mọi thứ khác với lập trình viên. Những người sử dụng máy tính đa năng hiện đại (trái ngược với hệ thống nhúng, máy tính tương tự và siêu máy tính) thường thấy ba lớp phần mềm thực hiện nhiều nhiệm vụ khác nhau: nền tảng, ứng dụng và phần mềm người dùng.

  • Phần mềm nền tảng
    Nền tảng bao gồm phần sụn, trình điều khiển thiết bị, hệ điều hành và thường là giao diện người dùng đồ họa, nói chung, cho phép người dùng tương tác với máy tính và các thiết bị ngoại vi (thiết bị đi kèm). Phần mềm nền tảng thường đi kèm với máy tính. Trên PC, người ta thường có khả năng thay đổi phần mềm nền tảng.
  • Phần mềm ứng dụng
    Phần mềm ứng dụng hoặc ứng dụng là những gì hầu hết mọi người nghĩ đến khi họ nghĩ về phần mềm. Ví dụ điển hình bao gồm gói ứng dụng văn phòng và trò chơi video. Phần mềm ứng dụng thường được mua riêng, độc lập với phần cứng máy tính. Đôi khi các ứng dụng cũng được đóng gói cùng với máy tính, nhưng điều đó không thay đổi thực tế là chúng chạy như các ứng dụng độc lập. Các ứng dụng thường là các chương trình độc lập với hệ điều hành, mặc dù chúng thường được thiết kế riêng cho từng nền tảng cụ thể. Hầu hết người dùng nghĩ về trình biên dịch, cơ sở dữ liệu và "phần mềm hệ thống" khác như là các ứng dụng.
  • Phần mềm do người dùng viết
    Hệ thống có khả năng được điều chỉnh cho phép người dùng cuối tự lập trình để đáp ứng nhu cầu cụ thể của người dùng. Phần mềm người dùng bao gồm các mẫu bảng tính và các mẫu xử lý văn bản. Ngay cả các bộ lọc email là một loại phần mềm do người dùng tùy biến. Người dùng tự tạo phần mềm này và thường bỏ qua tầm quan trọng của nó. Tùy thuộc vào mức độ thành thạo của phần mềm do người dùng viết vào các gói ứng dụng mặc định, nhiều người dùng có thể không nhận ra sự khác biệt giữa các gói ban đầu và những gì đã được đồng nghiệp thêm vào.

Thực hiện - chạy - thực thi

Phần mềm máy tính phải được "tải" vào bộ lưu trữ của máy tính (như ổ cứng hoặc bộ nhớ). Khi phần mềm đã được tải, máy tính có thể thực thi phần mềm. Điều này liên quan đến việc chuyển các hướng dẫn từ phần mềm ứng dụng, thông qua phần mềm hệ thống, đến phần cứng cuối cùng nhận được lệnh dưới dạng mã máy. Mỗi lệnh làm cho máy tính thực hiện thao tác dữ liệu di chuyển, thực hiện tính toán hoặc thay đổi luồng điều khiển của lệnh.

Việc di chuyển dữ liệu thường từ nơi này trong bộ nhớ sang nơi khác. Đôi khi nó liên quan đến việc di chuyển dữ liệu giữa bộ nhớ và các thanh ghi, điều này cho phép truy cập dữ liệu tốc độ cao trong CPU. Di chuyển dữ liệu, đặc biệt là khi di chuyển số lượng lớn dữ liệu, có thể khá tốn kém. Vì vậy, điều này đôi khi được tránh bằng cách sử dụng "con trỏ" để thay thế cho dữ liệu thực sự. Việc tính toán bao gồm các hoạt động đơn giản như tăng giá trị của một yếu tố dữ liệu biến. Các tính toán phức tạp hơn có thể liên quan đến nhiều phép toán và các yếu tố dữ liệu.

Chất lượng và độ tin cậy

Chất lượng phần mềm rất quan trọng, đặc biệt đối với các phần mềm thương mại và hệ thống như Microsoft Office, Microsoft WindowsLinux. Nếu phần mềm bị lỗi (lỗi), nó có thể xóa công việc của một người, làm hỏng máy tính và làm những việc không mong muốn khác. Lỗi và lỗi được gọi là " lỗi " thường được phát hiện trong quá trình thử nghiệm alpha và beta. Phần mềm cũng thường là nạn nhân của sự lão hóa phần mềm, sự suy giảm hiệu suất lũy tiến do sự kết hợp của các lỗi không nhìn thấy được.

Nhiều lỗi được phát hiện và loại bỏ (gỡ lỗi) thông qua kiểm tra phần mềm. Tuy nhiên, việc kiểm thử phần mềm hiếm khi được xử lý nếu có thể loại bỏ mọi lỗi; Một số lập trình viên nói rằng "mọi chương trình đều có ít nhất một lỗi nữa" (Luật của Lubarsky).[8] Trong thác phương pháp phát triển phần mềm, các đội kiểm tra riêng biệt thường được sử dụng, nhưng trong cách tiếp cận mới hơn, gọi chung là lập trình linh hoạt, các nhà phát triển thường làm tất cả những thử nghiệm riêng của họ, và chứng minh phần mềm cho người dùng / khách hàng thường xuyên để có được thông tin phản hồi. Phần mềm có thể được kiểm tra thông qua kiểm tra đơn vị, kiểm tra hồi quy và các phương pháp khác, được thực hiện thủ công hoặc phổ biến nhất, vì số lượng mã được kiểm tra có thể khá lớn. Chẳng hạn, NASA có quy trình kiểm thử phần mềm cực kỳ nghiêm ngặt đối với nhiều hệ điều hành và chức năng giao tiếp. Nhiều hoạt động dựa trên NASA tương tác và xác định lẫn nhau thông qua các chương trình chỉ huy. Điều này cho phép nhiều người làm việc tại NASA kiểm tra và đánh giá tổng thể các hệ thống chức năng. Các chương trình chứa phần mềm chỉ huy cho phép kỹ thuật phần cứng và vận hành hệ thống hoạt động dễ dàng hơn nhiều.

Giấy phép

Giấy phép của phần mềm cung cấp cho người dùng quyền sử dụng phần mềm trong môi trường được cấp phép và trong trường hợp giấy phép phần mềm miễn phí, cũng cấp các quyền khác như quyền sao chép.

Phần mềm độc quyền có thể được chia thành hai loại:

  • phần mềm miễn phí, bao gồm danh mục phần mềm "dùng thử miễn phí" hoặc phần mềm " freemium " (trước đây, thuật ngữ phần mềm chia sẻ thường được sử dụng cho phần mềm dùng thử / freemium miễn phí). Như tên cho thấy, phần mềm miễn phí có thể được sử dụng miễn phí, mặc dù trong trường hợp dùng thử miễn phí hoặc phần mềm freemium, điều này đôi khi chỉ đúng trong một khoảng thời gian giới hạn hoặc với chức năng hạn chế.
  • phần mềm có sẵn cho một khoản phí, thường được gọi là " phần mềm thương mại " không chính xác, chỉ có thể được sử dụng hợp pháp khi mua giấy phép.

Mặt khác, phần mềm nguồn mở đi kèm với giấy phép phần mềm miễn phí, cấp cho người nhận quyền sửa đổi và phân phối lại phần mềm.

Bằng sáng chế

Bằng sáng chế phần mềm, giống như các loại bằng sáng chế khác, về mặt lý thuyết được cho là cung cấp cho nhà phát minh một giấy phép độc quyền, có giới hạn thời gian cho một ý tưởng chi tiết (ví dụ: thuật toán) về cách triển khai một phần mềm hoặc một thành phần của một phần mềm. Các ý tưởng cho những điều hữu ích mà phần mềm có thể làm và các yêu cầu của người dùng, không được coi là có thể được cấp bằng sáng chế và việc triển khai cụ thể (nghĩa là các gói phần mềm thực tế thực hiện bằng sáng chế) thường không được cấp bằng sáng chế. tự động. Vì vậy, bằng sáng chế phần mềm được cho là bao gồm khu vực giữa, giữa các yêu cầu và thực hiện cụ thể. Ở một số quốc gia, yêu cầu phát minh được tuyên bố là có ảnh hưởng đến thế giới vật lý cũng có thể là một phần trong các yêu cầu đối với bằng sáng chế phần mềm phải có hiệu lực, mặc dù tất cả các phần mềm hữu ích đều có tác dụng đối với thế giới vật lý, yêu cầu này có thể là mở để tranh luận. Trong khi đó, luật bản quyền của Mỹ đã được áp dụng cho các khía cạnh khác nhau của việc viết mã phần mềm.[9]

Bằng sáng chế phần mềm đang gây tranh cãi trong ngành công nghiệp phần mềm với nhiều người giữ quan điểm khác nhau về chúng. Một trong những nguồn gây tranh cãi là sự phân chia nói trên giữa các ý tưởng ban đầu và bằng sáng chế dường như không được tôn vinh trong thực tế bởi các luật sư sáng chế, ví dụ như bằng sáng chế cho Lập trình hướng đối tượng (AOP), có ý định đòi quyền đối với bất kỳ công cụ lập trình nào thực hiện ý tưởng về AOP, dù thực hiện thế nào. Một nguồn tranh cãi khác là ảnh hưởng đến sự đổi mới, với nhiều chuyên gia và công ty nổi tiếng cho rằng phần mềm là một lĩnh vực chuyển động nhanh đến mức các bằng sáng chế phần mềm chỉ tạo ra chi phí và rủi ro kiện tụng lớn, và thực sự làm chậm sự đổi mới. Trong trường hợp tranh luận về bằng sáng chế phần mềm bên ngoài Hoa Kỳ, người ta đã đưa ra lập luận rằng các tập đoàn lớn và luật sư sáng chế của Mỹ có thể là người hưởng lợi chính trong việc cho phép hoặc tiếp tục cho phép bằng sáng chế phần mềm.

Tài liệu tham khảo

WikiPedia: Phần_mềm http://dankaminsky.com/1999/03/02/69/ http://msdn.microsoft.com/en-us/library/default.as... http://home.olemiss.edu/~misbook/sfsysfm.htm http://www.cs.uu.nl/education/vak.php?vak=INFOMCCO http://www.computer.org/csdl/mags/so/2009/03/mso20... //dx.doi.org/10.1109%2FMAHC.2003.1253887 http://www.tqlcvn.org/kythuat/kt-gochuviet-vpskeys... https://github.com/mark-watson/scripting-intellige... https://books.google.com/books?id=C8ouDwAAQBAJ&lpg... https://www.theguardian.com/technology/2012/dec/10...